/*
    定义日志消息类，进行日志中间信息的存储：
    1. 日志的输出时间
    2. 日志等级
    3. 源文件名称
    4. 源代码行号
    5. 线程ID
    6. 日志主体信息
    7. 日志器名称
*/

#include <iostream>
#include <string>

#ifndef __M_MSG_H__
#define __M_MSG_H__

#include <thread>

#include "level.hpp"
#include "util.hpp"

namespace superlog
{
    struct LogMsg
    {
        LogLevel::value _level;     //日志等级
        time_t _ctime;              //日志产生的时间戳
        size_t _line;               //行号
        std::string _filename;      //源文件名称
        std::thread::id _tid;       //线程ID
        std::string _loggername;    //日志器名称
        std::string _payload;       //日志主体消息(有效消息载荷)

        LogMsg(LogLevel::value level, size_t line, const std::string filename, const std::string loggername, const std::string msg)
            : _level(level),
              _line(line),
              _filename(filename),
              _loggername(loggername),
              _payload(msg),
              _ctime(util::Date::now()),
              _tid(std::this_thread::get_id())
        {}
    };
};

#endif